//package vn.com.vega.music.syncmanager;
//
//import vn.com.vega.chacha.v2.receiver.NetworkStatusReceiver;
//import vn.com.vega.music.clientserver.JsonSync;
//import vn.com.vega.music.clientserver.SyncDownstreamPackage;
//import vn.com.vega.music.clientserver.SyncUpstreamPackage;
//import vn.com.vega.music.database.DataStore;
//import android.app.Service;
//import android.content.Intent;
//import android.os.AsyncTask;
//import android.os.IBinder;
//import android.util.Log;
//
//public class SyncDataService extends Service {
//
//	@Override
//	public IBinder onBind(Intent arg0) {
//		// TODO Auto-generated method stub
//		return null;
//	}
//
//	@Override
//	public void onCreate() {
//		// TODO Auto-generated method stub
//		super.onCreate();
//		SynchronizeData synchronizeData = new SynchronizeData();
//		synchronizeData.execute();
//	}
//
//	@Override
//	public void onDestroy() {
//		// TODO Auto-generated method stub
//		super.onDestroy();
//	}
//
//	@Override
//	public int onStartCommand(Intent intent, int flags, int startId) {
//		// TODO Auto-generated method stub
////		return super.onStartCommand(intent, flags, startId);
//		return START_STICKY;
//	}
//
//	class SynchronizeData extends AsyncTask<Void, Void, Void> {
//
//		@Override
//		protected Void doInBackground(Void... params) {
//			// TODO Auto-generated method stub
//			DataStore dataStore = DataStore.getInstance();
//			if (dataStore == null) {
//				DataStore.init(SyncDataService.this);
//				dataStore = DataStore.getInstance();
//				if (dataStore == null) {
//					// What the hell here, exit service
//					return null;
//				}
//			}
//			try {
//				// check offline mode // true -> online; false -> offline
//				if (NetworkStatusReceiver.networkStatus == NetworkStatusReceiver.CONNECTION_TYPE_OFF) {
//					return null;
//				}
//				if (dataStore.isInOfflineMode()) {
//					return null;
//				}
//
//				// Step 1: send onSyncStart
//				// this is not main UI thread so to update interface i
//				// should
//				// use Handler to pass information back to
//				// main UI thread
//				// doSyncStatusNotify(true); // true -> start; false -> done
//				// //
//				// old code
//
//				// Step 2: get syncUpStreamPackage from DataStore
//				SyncUpstreamPackage syncUpstreamPackage = dataStore
//						.generateUpstreamPackage();
//
//				// Send json and merge response to data store
//				JsonSync js = JsonSync.doSync(syncUpstreamPackage);
//				// Check Json result before perform merge
//
//				if (js.isSuccess()) {
//					// Only do this if is.isSuccess
//					SyncDownstreamPackage syncDownstreamPackage = js.aDownstreamPackage;
//					// Step 6: update new data
//					dataStore.mergeDownstreamPackage(syncDownstreamPackage);
//					syncDownstreamPackage = null;
//				} else {
//					// On failed, revert it
//					dataStore.revertSync(syncUpstreamPackage);
//				}
//				syncUpstreamPackage = null;
//				js = null;
//
//				// Step 7: send onSyncDone
//				// this is not main UI thread so will throw an exception if
//				// i
//				// want to update interface here. I should
//				// use Handler to pass information back to main thread
//				// doSyncStatusNotify(false); // true -> start; false ->
//				// done //
//				// old code
//
//			} catch (Exception ex) {
//
//				Log.d(SynchronizeData.class.getSimpleName(),
//						"Error while synchronizing. Message: "
//								+ ex.getMessage());
//			}
//			return null;
//		}
//
//		@Override
//		protected void onPostExecute(Void result) {
//			// TODO Auto-generated method stub
//			super.onPostExecute(result);
//			SyncDataService.this.stopSelf();
//		}
//
//		@Override
//		protected void onPreExecute() {
//			// TODO Auto-generated method stub
//			super.onPreExecute();
//		}
//
//	}
//}
